package cn.tedu.springmvc.controller;

import cn.tedu.springmvc.mapper.UserMapper;
import cn.tedu.springmvc.pojo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class UserController2 {
    @Autowired
    private UserMapper userMapper;

    /**
     * 请求路径: /getUser
     * 请求方法: GET
     * 请求参数: 无
     * 返回响应: List<User>
     */
    //@RequestMapping(value="/getUser", method=RequestMethod.GET)
    @GetMapping("/getUser")
    public List<User> getUser(){
        List<User> users = userMapper.selectUser();

        return users;
    }

    /**
     * 查询指定用户功能
     * API接口如下:
     *   请求地址: /getUserById
     *   请求方法: GET
     *   请求参数: id
     *   返回响应: User
     */
    @GetMapping("/getUserById")
    public User getUserById(Integer id){
        User user = userMapper.selectUserById(id);

        return user;
    }

    /**
     * 新增用户功能
     * 接口如下:
     *   请求地址: /saveUser
     *   请求方法: POST
     *   请求类型: application/json
     *   请求数据: username password nickname
     *   返回响应: String 新增用户成功
     */
    @PostMapping("/saveUser")
    public String saveUser(@RequestBody User user){
        int i = userMapper.insertUser(user);
        if (i > 0){
            return "新增用户成功";
        }else {
            return "新增用户失败,请再试一次";
        }
    }

    /**
     * 更新用户功能
     * 接口文档
     *   请求地址: updateUser
     *   请求方法: PUT
     *   请求类型: application/json
     *   请求参数: id username password nickname
     *   返回响应: String 更新成功  |  更新失败
     */
    @PutMapping("updateUser")
    public String updateUser(@RequestBody User user){
        int i = userMapper.updateUserById(user);
        if (i>0){
            return "恭喜你,更新成功";
        }else {
            return "该用户不存在";
        }
    }

    /**
     * 删除用户功能
     * 接口文档:
     *   请求地址: deleteUser
     *   请求方法: DELETE
     *   请求参数: id
     *   请求类型: application/x-www-form-urlencoded
     *   返回响应: String 删除成功|删除失败
     */
    @DeleteMapping("deleteUser")
    public String deleteUser(int id){
        int i = userMapper.deleteUserById(id);
        if (i>0){
            return "删除成功";
        }else {
            return "该用户不存在";
        }
    }

    /**
     * 删除用户功能:Restful特征,路径中传递数据
     *   请求地址: /deleteUser/用户id
     *   请求方法: DELETE
     *   返回响应: 字符串
     * 测试: http://localhost:8080/deleteUser/8
     */
    @DeleteMapping("/deleteUser/{id}")
    public String deleteUserPath(@PathVariable int id){
        int i = userMapper.deleteUserById(id);
        if (i>0){
            return "删除成功";
        }else{
            return "删除失败";
        }
    }
}








